var countUnguarded = function(m, n, guards, walls) {
    //正着就是警卫能看到的全部格子，去掉，  反过来，对于格子来说就是，四周不能找到一个警卫 ,
    /* 用格子去找警卫，太麻烦了，还是用警卫找格子吧 那就是遍历警卫，每个警卫向四方扫描，直到碰到墙或者边界
    发现找墙也挺麻烦，还是把墙和警卫都安装到格子里才行。
    */ 
    
    let grids = new Array(m).fill(0).map(() => new Array(n).fill(0)) ;
    for(let [r,c] of walls){
        grids[r][c] = -1 ; //-1表示有墙，这有点扫雷地图的意思啊
    }
    for(let [r,c] of guards){
        grids[r][c] = 2 // 用2表示守卫 这样一个守卫遇到另一个守卫就可以停止了，减少一定的重复
        let r1 =r,c1 =c ;
        while(--r1>=0){ if(grids[r1][c1] >-1 && grids[r1][c1]<2){grids[r1][c1] =1; }else {break}};  r1=r ; 
        while(++r1<m){ if(grids[r1][c1] >-1 && grids[r1][c1]<2){grids[r1][c1] =1;  } else {break}};  r1=r ;
        while(--c1>=0){ if(grids[r1][c1] >-1 && grids[r1][c1]<2){grids[r1][c1] =1; }else {break}};  c1=c ;
        while(++c1<n){ if(grids[r1][c1] >-1 && grids[r1][c1]<2){grids[r1][c1] =1;   }else {break}};  c1=c ;

    }
    let ans = 0
    for(let r =0 ;r< m;r++){
        for(let c =0; c< n ; c++){
        if(!grids[r][c]){ans++}
        }
    }
    console.log(ans, grids); 
    return ans
   
};
countUnguarded( 
    4,
6,
[[0,0],[1,1],[2,3]],
[[0,1],[2,2],[1,4]]
)